home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / bits / error.h < prev    next >
C/C++ Source or Header  |  2008-09-29  |  3KB  |  75 lines

  1. /* Specializations for error functions.
  2.    Copyright (C) 2007 Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.  
  5.    The GNU C Library is free software; you can redistribute it and/or
  6.    modify it under the terms of the GNU Lesser General Public
  7.    License as published by the Free Software Foundation; either
  8.    version 2.1 of the License, or (at your option) any later version.
  9.  
  10.    The GNU C Library is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.    Lesser General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU Lesser General Public
  16.    License along with the GNU C Library; if not, write to the Free
  17.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18.    02111-1307 USA.  */
  19.  
  20. #ifndef    _ERROR_H
  21. # error "Never include <bits/error.h> directly; use <error.h> instead."
  22. #endif
  23.  
  24.  
  25. extern void __REDIRECT (__error_alias, (int __status, int __errnum,
  26.                     __const char *__format, ...),
  27.             error)
  28.   __attribute__ ((__format__ (__printf__, 3, 4)));
  29. extern void __REDIRECT (__error_noreturn, (int __status, int __errnum,
  30.                        __const char *__format, ...),
  31.             error)
  32.   __attribute__ ((__noreturn__, __format__ (__printf__, 3, 4)));
  33.  
  34.  
  35. /* If we know the function will never return make sure the compiler
  36.    realizes that, too.  */
  37. __extern_always_inline void
  38. error (int __status, int __errnum, __const char *__format, ...)
  39. {
  40.   if (__builtin_constant_p (__status) && __status != 0)
  41.     __error_noreturn (__status, __errnum, __format, __va_arg_pack ());
  42.   else
  43.     __error_alias (__status, __errnum, __format, __va_arg_pack ());
  44. }
  45.  
  46.  
  47. extern void __REDIRECT (__error_at_line_alias, (int __status, int __errnum,
  48.                         __const char *__fname,
  49.                         unsigned int __line,
  50.                         __const char *__format, ...),
  51.             error_at_line)
  52.   __attribute__ ((__format__ (__printf__, 5, 6)));
  53. extern void __REDIRECT (__error_at_line_noreturn, (int __status, int __errnum,
  54.                            __const char *__fname,
  55.                            unsigned int __line,
  56.                            __const char *__format,
  57.                            ...),
  58.             error_at_line)
  59.   __attribute__ ((__noreturn__, __format__ (__printf__, 5, 6)));
  60.  
  61.  
  62. /* If we know the function will never return make sure the compiler
  63.    realizes that, too.  */
  64. __extern_always_inline void
  65. error_at_line (int __status, int __errnum, __const char *__fname,
  66.            unsigned int __line,__const char *__format, ...)
  67. {
  68.   if (__builtin_constant_p (__status) && __status != 0)
  69.     __error_at_line_noreturn (__status, __errnum, __fname, __line, __format,
  70.                   __va_arg_pack ());
  71.   else
  72.     __error_at_line_alias (__status, __errnum, __fname, __line,
  73.                __format, __va_arg_pack ());
  74. }
  75.